<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // js如何判断一个对象是否属于一个类
        // 类本身指向就是构造函数，所以类的数据类型就是一个函数

        function Person(name) {
            this.name = name;
        }
        let obj = new Person();

        // 可以使用instanceof 判断构造函数的prototype属性是否出现在目标实例的原型链上
        console.log(obj instanceof Person);//true

        // 可以使用constructor，该属性会返回该实例的构造函数。不过这个方法不是特别的好，因为它是个属性，也就代表着是可以修改的，所以开发过程中不建议直接使用
        console.log(obj.constructor == Person);//true


        // 还记得怎么手写实现一个instanceof吗
        function ins(left, right) {
            right = right.prototype;
            while (true) {
                if (left == right) {
                    return true;
                }
                if (!left) {
                    return false;
                }
                left = Object.getPrototypeOf(left);
            }
        }
    </script>
</body>

</html>